http,servlet,jsp 总结,包括 servletConfig,servletContext,servletRequest,servletResponse,session,cookie,EL 表达式,jstl 标签库,servletFilter等知识点,这里只是总结一些介绍性的东西,具体的应用查看对用的 API 文档就好,就不说具体应用了。

http

Http 协议格式参考网页: https://my.oschina.net/manmao/blog/549123
其中各字段的内容我就没详细看了,以后用到再看,反正都是了解性东西。

servlet

一个 servlet 实现对象可以处理一个请求,一个 web 应用中有多个 servlet 实现对象,他们之间的数据交互通过 servletContext 完成。

Servlet的运行过程

Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:

  1. Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步。
  2. 装载并创建该Servlet的一个实例对象。
  3. 调用Servlet实例对象的init()方法。
  4. 建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
  5. WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

servletConfig

在 Servlet 的配置文件中,可以使用一个或多个 <init-param> 标签为 servlet 配置一些初始化参数。

当 servlet 配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

### servletContext

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

ServletContext对象被包含在ServletConfig对象中,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得对ServletContext对象的引用。

由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

ServletContext应用

  1. 多个Servlet通过ServletContext对象实现数据共享。
  2. 获取WEB应用的初始化参数。
  3. 实现Servlet的转发。
  4. 利用ServletContext对象读取资源文件。
    得到文件路径
    读取资源文件的三种方式
    .properties文件(属性文件)

servletRequest

API信息:
获得客户机信息

getRequestURL方法返回客户端发出请求时的完整URL。
getRequestURI方法返回请求行中的资源名部分。
getQueryString 方法返回请求行中的参数部分。
getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于Servlet的路径之后和查询参数之前的内容,它以“/”开头。
getRemoteAddr方法返回发出请求的客户机的IP地址
getRemoteHost方法返回发出请求的客户机的完整主机名
getRemotePort方法返回客户机所使用的网络端口号
getLocalAddr方法返回WEB服务器的IP地址。
getLocalName方法返回WEB服务器的主机名

获得客户机请求头

getHeader方法 
getHeaders方法 
getHeaderNames方法 
获得客户机请求参数(客户端提交的数据)
getParameter方法
getParameterValues(String name)方法
getParameterNames方法 
getParameterMap方法

request常见应用

  1. 防盗链
  2. 各种表单输入项数据的获取
    text、password、radio、checkbox、file、select、textarea、 hidden、image、button给js编程用
  3. 请求参数的中文乱码问题
  4. Javascript防止表单重复提交
  5. URL地址的编码
  6. request对象实现请求转发:请求转发指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理。
  7. 请求转发的应用场景:MVC设计模式
  8. request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。
    9。 request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理。
    setAttribute方法
    getAttribute方法
    removeAttribute方法
    getAttributeNames方法

response常见应用

  1. 向客户端输出中文数据
    分别以OutputStream和PrintWriter输出
    用OutputStream输出1,客户端看到的是什么?
  2. 文件下载
  3. 生成随机图片
  4. 发送http头,控制浏览器定时刷新网页(REFRESH)
  5. 发送http头,控制浏览器禁止缓存当前文档内容
    多学一招:使用html语言里面的标签来控制浏览器行为
  6. 通过response实现请求重定向。
  7. 请求重定向指:一个web资源收到客户端请求后,通知客户端去访问另外一个web资源,这称之为请求重定向。
    应用场景:用户注册。
    实现方式:response.sendRedirect()
    实现原理:302状态码和location头即可实现重定向

什么是会话?
会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。

会话过程中要解决的一些问题?
每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据。
例如:多个用户点击超链接通过一个servlet各自购买了一个商品,服务器应该想办法把每一个用户购买的商品保存在各自的地方,以便于这些用户点结帐servlet时,结帐servlet可以得到用户各自购买的商品为用户结帐。

保存会话数据的两种技术:

  1. Cookie
    Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。
  2. Session
    Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

session 技术

cookie 技术

JSP

MVC 架构中的 view 用的就是 jsp 技术。

jsp 原理:jsp 会被 tomcat 翻译为一个 servlet 实例对象。

jsp 语法挺简答的,就是 9 大隐式对象要记一下。

掌握下面的就差不多了:

JSP表达式
JSP脚本程序
JSP注释
JSP指令
JSP标签 
JSP隐式对象

参考网页:
http://www.runoob.com/jsp/jsp-implicit-objects.html

EL表达式入门

EL表达式用于获取数据,在JSP页面中可使用${标识符}的形式,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为””(注意,不是null)。

EL表达式中也可以使用${customerBean.address}的形式来访问JavaBean对象的属性。

结合JSTL标签,EL表达式也可轻松获取各种集合中的元素。

EL表达式也可使用类如${1==1}的形式进行简单的逻辑判断。

详细学习,请见:
http://www.runoob.com/jsp/jsp-expression-language.html

JSTL标签库入门

JSTL是sun公司开发的一套标签库,使用JSTL可以在页面中实现一些简单的逻辑,从而替换页面中的脚本代码。

在页面中使用JSTL标签需完成以下2个步骤:

1. 导入jstl.jar和standerd.jar这两个JSTL的jar文件。
2. 在JSP页面中使用<%@ tablib url=“” prifix=“” %>元素导入标签库。

JSTL标签库中常用标签:

<c:foreach var=“” items=“”>
<c:if test=“”>

详细学习,请见:
http://www.runoob.com/jsp/jsp-jstl.html

servletFilter

Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,如下所示:

自己感觉类似于动态代理,或者是面向切面编程的思想。

其他的一些知识和 httpServlet 差不多,就不详细说了。

本文总阅读量次.

留言